<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<!-- 
###############################################################################
#
# File:         winterpIS.html
# RCS:          $Header: $
# Description:  WINTERP Overview
# Author:       Niels P. Mayer
# Created:      1994
# Modified:     Mon Nov 24 17:36:02 1997 (Niels Mayer) npm@indeed.netcom.com
# Language:     HTML
# Package:      N/A
# Status:       Experimental (Do Not Distribute)
#
# Copyright (C) 1994-1996, Enterprise Integration Technologies Corp. and Niels Mayer.
# WINTERP 1.15-1.99, Copyright (c) 1993, Niels P. Mayer.
# WINTERP 1.0-1.14, Copyright (c) 1989-1992 Hewlett-Packard Co. and Niels Mayer.
# 
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of Enterprise Integration Technologies,
# Hewlett-Packard Company, or Niels Mayer not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission. Enterprise Integration Technologies, Hewlett-Packard
# Company, and Niels Mayer makes no representations about the suitability of
# this software for any purpose.  It is provided "as is" without express or
# implied warranty.
# 
# ENTERPRISE INTEGRATION TECHNOLOGIES, HEWLETT-PACKARD COMPANY AND NIELS MAYER
# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ENTERPRISE
# INTEGRATION TECHNOLOGIES, HEWLETT-PACKARD COMPANY OR NIELS MAYER BE LIABLE
# FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
###############################################################################
-->

<HTML>
<HEAD>
<TITLE>WINTERP -- The OSF/Motif Widget INTERPreter</TITLE>
</HEAD>
<BODY>
<H1>WINTERP -- The OSF/Motif Widget INTERPreter</H1>
<P>
<PRE><B>by <A href="http://www.cybertribe.com/mayer/">Niels Mayer</A></B>
	    Niels Mayer
	    5214-F Diamond Heights Blvd., #635
	    San Fransisco, CA 94131
	    E-Mail: mayer@netcom.com
</PRE>
<P>
<A href="winterp.html">WINTERP home page</A>
<P>
<I>WINTERP</I> is the OSF/Motif <B>W</B>idget <B>INTERP</B>reter, an application development environment enabling rapid prototyping of graphical user-interfaces (GUI) through the interactive programmatic manipulation of user interface objects and their attached actions. <I>WINTERP</I> is also an excellent platform for delivering extensible or customizable applications. By embedding a small, efficient Lisp interpreter with UI primitives within the delivered application, users and system integrators can tailor the static and dynamic layout of the UI, UI/application dialogue, and application functionality. 
<P>
<I>WINTERP</I> is a good tool for learning and experimenting with the capabilities of the OSF/Motif UI toolkit, allowing UI designers to more easily play "what if" games with different interface styles. <I>WINTERP</I>'s implementation provides a compromise between the prototyping and extensibility advantages of Lisp environments, and the inefficiency and expenses of delivering Unix applications under environments such as Common Lisp. Typically, prototyping and customization are done entirely in interpreted Lisp; for delivery, efficiency-critical low-level code may be written in C and is easily exported to the interpreter as a new primitive. 
<P>
<I>WINTERP</I> was first made publicly available on the X11r4 "contrib" distribution and new releases have appeared on the X11r5 and X11r6 distribution. The recent X11r6 release of <I>WINTERP</I> 2.0 significantly improves on previous releases by providing a variety of developer tools and libraries for increased productivity. Improved functionality is delivered via object-oriented graphics and 2.5D animation, asynchronous subprocesses, the XmGraph widget (for creating directed acyclic graphs, trees, and direct-manipulation displays), the Table widget (GUI layout using tbl(1)-style specifications), GIF support, etc. 
<P>
<I>WINTERP</I>'s interpreter is based on David Betz, Tom Almy, Luke Tierney et al's XLISP-PLUS. The interpreter's Smalltalk-inspired object system enables a truly object oriented interface to the X11 toolkit Intrinsics (Xt) and the OSF/Motif widget set. <I>WINTERP</I>'s use of a real programming language for customization/prototyping allows <I>WINTERP</I> based applications to be much more flexible than applications using lower-level and less-general languages provided by the X resource database, Brunecky&amp;Widget Creation Library (WCL), OSF/Motif's UIL (user interface language), and Ousterhout's TCL/Tk. Furthermore, the use of object-orientation at a fundamental level within the application UI code allows <I>WINTERP</I>-based applications to scale more effectively than other languages. 
<P>
<I>WINTERP</I> 2.0 features an object-oriented 2.5D graphics and animation "widget" based on John Stasko's Xtango path transition paradigm. Both for static and dynamic graphics, this high-level interface simplifies and abstracts away much of the low-level drudgery required to create 2.5 D graphics interfaces -- smooth, flicker free display updates occur as complex nonrectangular graphical objects move around and obscure and uncover each other. Animation composition operations allow multiple individual shapes to all move "simultaneously" through sequences of animation frames. The graphics are pixel-independent and easily resizable, scalable and zoomable. Each primitive graphics image class supports its own set of class specific animation and movement methods, while some operations (e.g. movement, fill, etc) are polymorphic. The following primitive objects are supported: 
<P>
<UL>
<LI> Line (w/ color, forward-arrow, backward-arrow, bidirectional-arrow, thickness, and style options); 
<LI> Rectangle (w/ color, fill options); 
<LI> Circle (w/ color, fill options); 
<LI> Ellipse (w/ color, fill options); 
<LI> Polygon (w/ color, fill options); 
<LI> Polyline (w/ color, forward-arrow, backward-arrow, bidirectional- arrow, line style, line-thickness options); 
<LI> Spline (w/ color, line-style and line-thickness options) 
<LI> Text (w/ font, color, and centering options) 
<LI> Bitmaps and Bitmap movies 
<LI> GIF images. 
</UL>
<P>
The primitive graphics classes may also be contained in a composite image class, which provides a grouping and layering principle for new classes presenting multiple images. Composite images allow the construction of independent layers of animation objects which may be operated on in groups. 
<P>
<I>WINTERP</I>'s graphics capabilities enable simple game-style animation, employing multiple layers of arbitrarily shaped objects. Furthermore, application-specific interactive-graphics capabilities may be encapsulated into a new Widget-Class. This significantly simplifies the creation and integration of new graphics widgets into the system -- these special widgets look like normal Motif widgets to the rest of the system. 
<P>
 To enable GUI-applications based on existing Unix facilities, <I>WINTERP</I>provides primitives for collecting data from Unix processes, and facilities for interacting with other Unix processes. These facilities make it possible to glue together existing Unix functionality into a GUI based application with a relatively small amount of <I>WINTERP</I>-Lisp "glue". <I>WINTERP</I>2.0 features the ability to run multiple interactive, asynchronous Unix subprocesses without blocking GUI interactivity. This feature is useful for creating GUI interfaces to existing terminal-based programs, and can also be used for connecting to interactive network services and databases. 
<P>
 An environment similar to <I>WINTERP</I>'s already exists in the Gnu-Emacs text editor -- <I>WINTERP</I> was strongly influenced by Gnu-Emacs's successful design. In Gnu-Emacs, a mini-Lisp interpreter is used to extend the editor to provide text-browser style interfaces to a number of Unix applications (e.g. e-mail user agents, directory browsers, debuggers, etc.). Whereas Emacs-Lisp enables the creation of new applications by tying together C Implemented primitives operating on text-buffer UI objects, <I>WINTERP</I>-Lisp ties together operations on graphical UI objects implemented by the Motif widgets. Both achieve a high degree of customizability that is common for systems implemented in Lisp, while still attaining the speed of execution and (relatively) small size associated with C-implemented applications. 
<P>
<H2> WINTERP features:</H2>
<P>
<UL>
<LI> Free with non-restrictive copyright -- available via anonymous ftp from ftp.x.org, directory contrib/devel_tools, file winterp-2.XX.tar.gz. 
<LI> Portable -- entirely implemented via machine independent C source and X11/Xt/Motif libraries. 
<LI> OSF/Motif widgets are real XLISP objects widgets can be specialized via subclassing, methods added or altered, etc. 
<LI> Automatic storage management (via garbage collection) of Motif/Xt/X data, animation and graphics data, and application resources. 
<LI> Contains facilities for simple "direct manipulation" of UI components. 
<LI> Interface to Gnu Emacs's lisp-mode allows code to be developed and tested without leaving the editor. 
<LI> Interactive programming also available in the "<I>WINTERP</I> Control Panel", with editing taking place in a Motif text widget controlled by <I>WINTERP</I>. 
<LI> Built-in RPC mechanism for inter-application communications, implemented via serverized, event-driven Lisp interpreter. 
<LI> XmGraph widget for creating directed acyclic graphs, trees, and direct-manipulation displays. 
<LI> Table widget allows constraint-based GUI static layout using tbl(1)-style specifications. 
</UL>
<H3> References on WINTERP, and its components:</H3>
<P>
 David Michael Betz. "XLISP: An Object-oriented Lisp (version 2.1)" Unpublished documentation accompanying the public release of Xlisp software. David Michael Betz, P.O. Box 144, Peterborough, NH 03458, April, 1989. 
<P>
 Olaf Heimburger. "Elche Im Winter -- Interaktive X-Applicationbuilder unter Lisp -- Elk und WINTERP." iX, July 1991, pp 64-68. 
<P>
 Niels P. Mayer, Allan W. Shepherd and Allan J. Kuchinsky. "Winterp: An object-oriented, rapid prototyping, development and delivery environment for building extensible applications with the OSF/Motif UI Toolkit." In Proceedings Xhibition '90, X Window System and Open Systems Technical Conference, San Jose, CA, May 1990, pp 49-64. 
<P>
 Niels P. Mayer, Allan W. Shepherd and Allan J. Kuchinsky. The WINTERP Widget INTERPreter -- An Application Prototyping and Extension Environment for OSF/Motif. In Proceedings X Into The Future, The European X Users Group Autumn Conference 1990, Surrey, UK, September 1990, pp. 33-55. 
<P>
 Niels P. Mayer. The WINTERP Widget INTERPreter -- A Lisp Prototyping and Extension Environment for OSF/Motif-based Applications and User-Interfaces. Lisp Pointers, ACM SIGPLAN, Volume IV, Number 1, pp 45-60. 
<P>
 Niels P. Mayer. The WINTERP OSF/Motif Widget INTERPreter -- A graphical user-interface language for rapid prototyping and delivering extensible applications. In Proceedings Motif '91, First Annual International Motif Users Meeting, Washington DC, December 1991, pp. 248-269. 
<P>
 John T. Stasko. The Path-Transition Paradigm: A Practical Methodology for Adding Animation to Program Interfaces. Journal of Visual Languages and Computing. (date, volume, page, publisher info unknown). 
<P>
 Don Libes. Expect: Curing Those Uncontrollable Fits of Interaction, Proceedings of the Summer 1990 USENIX Conference, Anaheim, CA, June 11-15, 1990. 
<H3> Papers describing applications written using WINTERP:</H3>
<P>
 Allan Shepherd, Niels Mayer, and Allan Kuchinsky. STRUDEL: An Extensible Electronic Conversation Toolkit. In David Marca and Geoffrey Bock, editors, GROUPWARE: Software for Computer-Supported Cooperative Work, IEEE Computer Society Press, 1992, pp. 505-518. (originally, in proceedings Conference on Computer-Supported Cooperative Work, Los Angeles, October 1990, pp. 93-104.) 
<P>
 Jay Glicksman, Glenn Kramer, and Niels Mayer. "Internet Publishing via the World Wide Web". In proceedings Groupware '94, August 1994. San Jose, CA.
<P>
 Niels Mayer, and Jay Glicksman. A paper describing the <a href="http://www.cybertribe.com/mayer/wwweasel/">WWWeasel</a> multimedia/html authoring environment.

<HR>
<ADDRESS>
mayer@netcom.com
</ADDRESS>
</BODY>
</HTML>
